Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
Vuex | Ser capaz de actualizar fuera de una mutación

Estoy tratando de actualizar el estado de una acción que se controla a través de Vuex. Lo sé inicialmente, no puedo actualizar el estado de la acción sin hacerlo directamente a través de una mutación. Sin embargo, realmente no quería hacer eso porque estoy tratando de usarlo en una devolución de llamada. Así que intenté clonar esta matriz de acciones y luego usar esta variable. Sin embargo, esto parece producir el mismo error:

no mutar el estado de la tienda vuex fuera de los controladores de mutación

Cada vez que mi modal cambia, agrego un observador, que verifica si el modal tiene acciones y si lo "clona" en una variable local usando un bucle for.

 @Watch('modal') onModalChanged(modal: ModalData) { if (modal && modal.actions) { for (let i = 0; i < modal.actions.length; i++) { this.actions[i] = modal.actions[i]; } } }

Luego tengo un bucle v-for dentro de mi plantilla que recorre la variable local de acciones y realiza un @click .

La acción se configura de la siguiente manera al construir el modal:

 modalStore.show({ ..., actions: [ { text: 'Save', theme: 'positive', click: (action: Action) => { } } ] });

Dentro del método de clic, quiero poder establecer el estado de carga de la acción, es decir

 click: (action: Action) => { action.loading = true; }

De esta manera, puedo determinar si el botón debe mostrar un estado de carga, pero aquí es donde radica el problema, ya que obtengo la tienda no mutar vuex.

¿Tengo que pasar por un estado, ya que esto es con modales, podría haber múltiples, lo que significaría que tendría que hacer un método como el siguiente:

 updateButtonState(modal: ModalData, actionIndex: number, loading: boolean) { modal.actions[actionIndex].loading = true; }

Pero en el momento de crear el modal, no tengo una referencia para pasar el modal.

¿Hay una solución o una mejor manera de abordar esto?

El método mínimo de action.loading = true sería ideal, aunque sé que esto podría no ser posible.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

En primer lugar, debe saber que los objetos (las matrices también son objetos) se relacionan por enlace, no por valor. Entonces, si desea hacer una copia de una matriz, debe hacer esto this.copy = [...this.original] y luego podrá cambiar la matriz de copia sin cambiar la original de la tienda. Pero si también necesita actualizarlo en la tienda, la única forma es hacerlo con mutaciones. En esta mutación, puede pasar un objeto con el índice de una matriz, el valor que puede guardar, etc.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!